﻿#define _CRT_SECURE_NO_WARNINGS 1
#include"snack.h"
//大致步骤：
//1.设置本地环境（提升中文的可移植性）+ 隐藏光标 + 初始化控制台界面
//2.贪吃蛇的第一个界面，即欢迎界面
//3.设置贪吃蛇的第二个界面，即介绍操作界面
//4.设置贪吃蛇的第三个界面，即游戏界面
//4.1 配置游戏情况
//4.2 创建核心机制代码
//4.3 绘制游戏界面的围墙与游戏说明和蛇与食物
//5.收尾（如销毁链表）


void test()
{
	//初始化控制台界面
	InitConsole();
	//设置欢迎界面
	WelcomeScreen();
	//设置游戏规则介绍界面
	ShowGameInstructions();
	char c = '0';
	do {
		//配置游戏情况
		Game_Snack game_snack = { 0 };
		game_snack.dir = RIGHT;
		game_snack.pheadsnack = Snack();
		game_snack.pfood = Food(game_snack.pheadsnack);
		game_snack.game_status = RUN_NORMAL;
		game_snack.total_​score = 0;
		game_snack.sleep_time = 250;
		game_snack.food_score = 5;
		//打印游戏界面
		GameScreen(&game_snack);
		SetPos(START_X + COLS / 2 - 6, START_Y + ROWS / 2);
		printf("请问您是否想要再来一局？(Y or N)");
		scanf("%c", &c);
		while (c != 'y' && c != 'n' && c != 'Y' && c != 'N')
		{
			SetPos(START_X + COLS / 2 - 6, START_Y + ROWS / 2 + 1);
			printf("                             ");
			SetPos(START_X + COLS / 2 - 6, START_Y + ROWS / 2 + 1);
			printf("您的输入有误，请重新输入： ");
			scanf("%c", &c);
		} 
		system("cls");
		//清理动态申请的空间
		pSnackNode cur = game_snack.pheadsnack;
		pSnackNode next = cur->next;
		while (cur != NULL)
		{
			free(cur);
			cur = next;
			if (cur != NULL)
			{
				next = cur->next;
			}
		}
	} while (c == 'y' || c == 'Y');
}

int main()
{
	//设置本地化环境
	setlocale(LC_ALL, "");
	//为生成随机数做准备
	srand((unsigned int)time(NULL));
	//游戏主要功能的试验
	test();
	//getchar();//测试时避免程序直接结束
	return 0;
}